/*
 * @Author: 四川华西绿舍建材有限公司
 * @Date: 2024-03-21 16:42:19
 * @LastEditors: 陈波
 * @LastEditTime: 2024-04-19 21:35:58
 * @Description: 
 * @FilePath: \graDesign\src\request\api\dataSource.ts
 */
import request from '../http'

type TNum = {
    initNum: number  // 设备数量
}
// TD3数据源获取 -- 传递设备数量
function getTd3DataSourceByCount (data: TNum) {
    return request({
        url: '/api/td3/send-params',
        method: 'post',
        data
    })
}

// # max_episodes = 1000  # 设置最大回合数
// # max_steps = 20  # 设置每回合的最大步数
// # batch_size = 45 # 设置批次大小
// # update_itr = 1  # 设置更新迭代次数
// # hidden_dim = 512 # 设置隐藏层维度
// # policy_target_update_interval = 10  # 设置策略目标更新间隔
// # deterministic = true  # 设置是否使用确定性策略
// # explore_noise_scale = 0.1  # 设置探索噪声比例
// # eval_noise_scale = 0.5  # 设置评估噪声比例
// # reward_scale = 1.  # 设置奖励缩放因子
// # frame_idx = 0  # 设置当前帧索引
// # n_index = 40   # 设置设备数量

// TD3数据源获取 -- 训练返回
function getTd3DataSourceLSTM (data: any) {
    return request({
        url: '/api/td3/td3_lstm',
        method: 'post',
        data
    })
}

// SAC/TD3数据源获取 -- 基线算法
function getTd3DataSourceBaseline (data: any) {
    return request({
        url: '/api/td3/td3_no_lstm',
        method: 'post',
        data
    })
}

// SAC数据源获取 -- 采用了lstm的SAC联邦算法
function getSACDataSourceByLSTM(data: any) {
    return request({
        url: '/api/sac/new_sac_lstm',
        method: 'post',
        data
    })
}

// SAC数据源获取 -- 采用了r2n2的SAC联邦算法
function getSACDataSourceByR2N2 (data: any) {
    return request({
        url: '/api/sac/new_sac_r2n2',
        method: 'post',
        data
    })
}

// 已经跑完的轮次，直接调用即可(数据大屏)
// TD3
function getDoneTD3LSTM(data) {
    return request({
        url: '/api/done/done_1000_td3_lstm',
        method: 'post',
        data
    })
}

function getDoneTD3LSTMRewards() {
    return request({
        url: `/api/done/done_td3_lstm`,
        method: 'get'
    })
}

// const deviceCounts = ['10', '20', '40', '60', '80', '100']

function getDoneTD3NoLSTMRewards() {
    return request({
        url: `/api/done/done_td3_no_lstm`,
        method: 'get'
    })
}

function getDoneTD3NoLSTM(data) {
    return request({
        url: `/api/done/done_1000_td3_no_lstm`,
        method: 'post',
        data
    })
}


// SAC
// function getDoneSACR2N2() {
//     return request({
//         url: '/api/done/done_sac_r2n2',
//         method: 'get'
//     })
// }
function getDoneSACFedAvg() {
    return request({
        url: '/api/done/done_fedavg',
        method: 'get'
    })
}
function getDoneSACFedAecs() {
    return request({
        url: '/api/done/done_fed_aecs',
        method: 'get'
    })
}

// 接口改进
function getDoneSACR2N2(data) {
    return request({
        url: '/api/done/done_1000_sac_r2n2',
        method: 'post',
        data
    })
}


export default {
    // 动态获取
    getTd3DataSourceByCount,
    getTd3DataSourceLSTM,
    getTd3DataSourceBaseline,
    getSACDataSourceByLSTM,
    getSACDataSourceByR2N2,
    // 直接获取已计算
    getDoneTD3LSTM,
    getDoneTD3LSTMRewards,
    getDoneTD3NoLSTMRewards,
    getDoneTD3NoLSTM,
    getDoneSACR2N2,
    getDoneSACFedAvg,
    getDoneSACFedAecs
}